class AudioFileValidationResult:
    def __init__(self, is_valid: bool, error: str = "") -> None:
        self.is_valid = is_valid
        self.error = error

class AudioSegmentResult:
    def __init__(self, segment_id: int, start_time: float, end_time: float, text: str, error: str = "") -> None:
        self.segment_id = segment_id
        self.start_time = start_time
        self.end_time = end_time
        self.text = text
        self.error = error

class AudioTextExtractionResult:
    def __init__(self, file_path: str) -> None:
        self.success = False
        self.file_name = file_path.split('/')[-1]
        self.file_path = file_path
        self.text = ""
        self.error = ""
        self.segments: list[AudioSegmentResult] = []

class BatchExtractionResult:
    def __init__(self, directory_path: str) -> None:
        self.success = True
        self.directory = directory_path
        self.total_files = 0
        self.successful_extractions = 0
        self.results: list[AudioTextExtractionResult] = []
